package com.github.cyf.requestLock.annotation;

import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
import java.util.concurrent.TimeUnit;

/**
 * @author chenyifan
 * @create 2025-01-14 9:14
 */
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.METHOD)
public @interface RequestLock {

    /**
     * redis 锁前缀
     * @return
     */
    String prefix() default "";

    /**
     * 过期时间，单位秒
     * @return
     */
    int expire() default 2;

    /**
     * 时间单位
     * @return
     */
    TimeUnit timeUnit() default TimeUnit.SECONDS;

    /**
     * key 的分隔符，用来将方法的多个参数合并在一起的
     * 比如 userName 是张三，userPhone 是 123456，那么完整的 key 就是"张三&123456"，最后再加上 redis 锁前缀，就组成了一个唯一key
     * @return
     */
    String delimiter() default "&";
}